<?php


namespace app\admin\exception;



use think\exception\Handle;
use think\Response;
use think\facade\Env;
use Throwable;

class ExceptionHandle extends Handle
{
    private $code;
    private $msg;
    private $errorCode;

    public function render($request,Throwable $e): Response
    {
       if($e instanceof BaseException){
        $this->code=$e->code;
        $this->msg=$e->msg;
        $this->errorCode=$e->errorCode;
       }else{

           if(Env::get('APP_DEBUG')){
               return parent::render($request, $e);}

           else{   $this->code=500;
                   $this->msg="服务器内部错误";
                   $this->errorCode=999;}
       }
       $result = [
           'msg'          =>$this->msg,
           'error_code'   =>$this->errorCode,
           'request_url'  =>$request->url()
       ];
       return json($result,$this->code);
    }

}